package stu.aistar.day03;

/**
 * 数组的内存模型
 */
public class ArrayExtendsDemo {
    public static void main(String[] args) {
        //对象的开辟过程

        //通过new关键字在Jvm的堆中开辟新的空间01，用来存储这个对象{10,20,30}
        //然后将这个对象在堆空间中的内存地址赋值给了引用变量arr1[存储在栈区]
        //"结论" - arr1的本质不是对象,只是一个引用变量而已
        //"结论" - 引用和对象之间的关系
        //          引用变量中存储的就是对象在堆空间的内存地址
        //          "气球理论" - 一个引用变量在同一个时刻,只能指向一个对象
        //                    - "一个对象可以在同一个时刻被多个引用指向"

        int[] arr1 = new int[]{10,20,30};

        System.out.println(arr1);

        int[] arr2 = {10,20,30};

        System.out.println(arr2);

        // == 永远比较的是值[这个值的具体的内容是地址而已]
        System.out.println(arr1==arr2);

        //s1和s2各自new了一个地址
        String s1 = new String("good");
        String s2 = new String("good");
        System.out.println(s1 == s2);//false

        //字符串常量池
        String a1 = "hello";
        String a2 = "hell0";//没有new还是指向原来”hello”的地址
        System.out.println(a1 == a2);//true
    }
}
